/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.profesoresparticulares.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import pe.edu.upc.dew.profesoresparticulares.model.Calificacion;
import pe.edu.upc.dew.profesoresparticulares.util.JdbcUtils;

/**
 *
 * @author HDRESDA
 */
public class AlumnoCalificacionProfesorDao {

    public void registrarCalificacion(Calificacion calificacion) {
        Connection connection = JdbcUtils.getConnection();

        connection = null;
        Statement st = null;

        try {
            connection = JdbcUtils.getConnection();
            st = connection.createStatement();
            final String query = "Insert into calificacion `codAlumno`,`codProfesor`,`calificacion`,`comentario`,`fecha`) values " +
                    "'";
            st.executeUpdate(query);

            PreparedStatement pstmt = connection.prepareStatement("insert into calificacion" + "(codAlumno,codHorario, calificacion,comentario,fecha) " + "values (?,?,?,?,?)");
            pstmt.setInt(1, calificacion.getCodAlumno());
            pstmt.setLong(2, calificacion.getcodHorario());
            pstmt.setInt(3, calificacion.getCalificacion());
            pstmt.setString(4, calificacion.getComentario());
            pstmt.setString(5, calificacion.getFecha());
            pstmt.executeUpdate();


        } catch (SQLException e) {
            throw new IllegalStateException("Error al obtener el usuari", e);
        } finally {
            JdbcUtils.closeStatement(st);
            JdbcUtils.closeConnection(connection);
        }




    }

    public void actualizarCalificacion(Calificacion calificacion) {

        Connection connection = JdbcUtils.getConnection();

        connection = null;
        Statement st = null;

        try {
            connection = JdbcUtils.getConnection();
            st = connection.createStatement();
            final String query = "update calificacion " +
                         "set codAlumno = " + calificacion.getCodAlumno() + "," +
                         "comentario = " + calificacion.getComentario() + "," +
                         "calificacion = " + calificacion.getCalificacion() + "," +
                         "fecha = " + calificacion.getFecha() + "," +
                         "where codHorario = " + calificacion.getcodHorario() + "";

            st.executeUpdate(query);

        } catch (SQLException e) {
            throw new IllegalStateException("Error al obtener el usuari", e);
        } finally {
            JdbcUtils.closeStatement(st);
            JdbcUtils.closeConnection(connection);
        }

    }

    public ArrayList<Calificacion> listaCalificacionesAlumno(Integer codAlumno) {
        ArrayList<Calificacion> calificaciones = new ArrayList<Calificacion>();

        Connection connection = JdbcUtils.getConnection();

        Calificacion calificacion = new Calificacion();

        connection = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            connection = JdbcUtils.getConnection();
            st = connection.createStatement();
            final String query = "select * from calificacion where CodAlumno=" + codAlumno + " ";
            rs = st.executeQuery(query);
            while (rs.next()) {
                calificacion = new Calificacion();
                calificacion.setCodAlumno(rs.getInt("codAlumno"));
                calificacion.setcodHorario(rs.getLong("codHorario"));
                calificacion.setCalificacion(rs.getInt("calificacion"));
                calificacion.setComentario(rs.getString("comentario"));
                calificacion.setFecha(rs.getString("fecha"));
                calificaciones.add(calificacion);
            }
            return calificaciones;
        } catch (SQLException e) {
            throw new IllegalStateException("Error al obtener las calificaciones", e);
        } finally {
            JdbcUtils.closeResultSet(rs);
            JdbcUtils.closeStatement(st);
            JdbcUtils.closeConnection(connection);
        }


    }

    public ArrayList<Calificacion> listaCalificacionesProfesor(Integer codProfesor) {

        ArrayList<Calificacion> calificaciones = new ArrayList<Calificacion>();

        Connection connection = JdbcUtils.getConnection();

        Calificacion calificacion = new Calificacion();

        connection = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            connection = JdbcUtils.getConnection();
            st = connection.createStatement();
            final String query = "select * from calificacion where CodProfesor=" + codProfesor + " ";
            rs = st.executeQuery(query);
            while (rs.next()) {
                calificacion = new Calificacion();
                calificacion.setCodAlumno(rs.getInt("codAlumno"));
                calificacion.setcodHorario(rs.getLong("codHorario"));
                calificacion.setCalificacion(rs.getInt("calificacion"));
                calificacion.setComentario(rs.getString("comentario"));
                calificacion.setFecha(rs.getString("fecha"));
                calificaciones.add(calificacion);
            }
            return calificaciones;
        } catch (SQLException e) {
            throw new IllegalStateException("Error al obtener las calificaciones", e);
        } finally {
            JdbcUtils.closeResultSet(rs);
            JdbcUtils.closeStatement(st);
            JdbcUtils.closeConnection(connection);
        }

    }
}
